Solving Real-World Problems with Logic: 

A Hands-On Guide to

Satisfiability Modulo Theories and Optimization Modulo Theories